package fl.ass.service.service;

import java.util.List;
import java.util.Map;

import cmm.mid.core.framework.dto.DataResultDTO;
import cmm.mid.core.framework.page.Pager;
import cmm.service.core.framework.biz.IBaseBiz;
import cn.cmm.base.framework.exception.BaseException;
import fl.ass.facade.condition.AssTrailCarDQueryCondition;
import fl.ass.facade.dto.AssTrailCarDDTO;
import fl.ass.facade.dto.AssTrailCarMDTO;
import fl.ass.facade.dto.ProductStatusLogDTO;
import fl.ass.service.po.AssTrailCarD;
import fl.flow.facade.flow.dto.FlowCompleteParamsDTO;
import fl.flow.facade.flow.dto.SysFlowSHDTO;

/**
 * @Description: 拖车信息明细表 服务层接口
 * @Description:持久层方法名称前缀：新增：insert* 删除：delete* 修改：update* 批量：batch* 查询对象：select* get* find* 查询集合：select*
 * @Description:业务层方法名称前缀：新增：add* 删除：remove* 修改：modify* 查询对象：select* get* 批量：batch* 查询集合：search*
 */
public interface IAssTrailCarDService extends IBaseBiz<AssTrailCarD, AssTrailCarDDTO, AssTrailCarDQueryCondition>{
	
	/**
	 * 分页查询拖车申请列表
	 * @param page
	 * @return
	 */
	public Pager findTrailCarApplyListByPage(Pager page);
	
	/**
	 * 根据支付表ID查询支付表对应的基本信息
	 * @param paySchIds
	 * @return
	 */
	public List<AssTrailCarDDTO> findTrailCarApplyListByPaySchIds(List<Long> paySchIds);
	
	/**
	 * 根据支付表ID查询支付表对应的所属事业部
	 * @param paySchId
	 * @return
	 */
	public AssTrailCarDDTO findOrgInfoByPaySchId(Long paySchId);
	
	/**
	 * 修改拖车明细信息
	 * @param dto
	 */
	public void updateAssTrailCarDetailInfo(AssTrailCarDDTO dto);
	
	/**
	 * 修改支付表状态-根据项目产品明细ID
	 * @param dtos
	 * @return
	 */
	public void updatePayStatus(List<ProductStatusLogDTO> dtos);
	
	/**
	 * 根据ID获取拖车对应的基本信息
	 * @param ids
	 * @return
	 */
	public List<AssTrailCarDDTO> findTrailCarDetailListByIds(List<Long> ids) throws BaseException;
	
	/**
	 * 保存拖车信息
	 * @param dto
	 */
	public Long saveAssTrailCar(AssTrailCarMDTO dto);

	/**
	 * 根据表名获取主键
	 * @param tabNm
	 * @return
	 */
	public Long getPkId(String tabNm) throws BaseException;
	
	/**
     * 拖车模块-发起流程
     * @param qc
     * @return
     * @throws BaseException
     */
    public DataResultDTO addTrailCarApply(AssTrailCarDQueryCondition qc) throws BaseException;
    
	/**
	 * 分页查询拖车列表
	 * @param page
	 * @return
	 */
	public Pager findTrailCarListByPage(Pager page);
	
	/**
     * 根据项目ID查询拖车模块相关流程业务主键列表
     * 返回值形式：Map<paySchNo,List<Long> dateIdList>
     * @param prjId
     * @return
     * @throws BaseException
     */
    public Map<String,List<Long>> getAssDateIdList(Long prjId)throws BaseException;

	AssTrailCarDDTO selectOne(AssTrailCarDQueryCondition qc);

    /**
     * 根据主键id获取流程对象进而获取流程发起时间
     * @param dataId
     * @return
     */
	List<SysFlowSHDTO> getSysFlowSHDTOS(Long dataId) throws BaseException;

    /**
     * 添加借款记录信息和流程信息
     * @param id
     * @param flowCompleteParamsDTO
     * @throws BaseException
     */
    public void addFinLoadInfoAndFlowHistory(Long id, FlowCompleteParamsDTO flowCompleteParamsDTO) throws BaseException;

}
